/**
 *@info 设备SDK公共方法
**/

export default function () {
  /**
   *@describe 返回首页
  **/
  Vue.prototype.toHomePage = function () {
    Jsborya.pageJump({
      url: '',
      stepCode: 'HOME',
      depiction: '首页',
    });
  }
  /**
   *@describe 设置header
   *@param {Object|必填} (deviceInfo) 用户信息
   *@param {Object|必填} (headerInfo) 用户信息
   *@param {Object|选填} (vm) vue实例
  **/
  Vue.prototype.setHeaderWithDevice = function (deviceInfo, headerInfo, vm, cb) {
    // 获取
    const action = () => {
      Jsborya.checkDeviceStatus((res) => {
        set_(res)
      });
    }
    // 设置
    const set_ = (res) => {
      let icon = 'device_grey', value = '未连接设备';

      if (res.status === 'CONNECTION' || res.status === 'SUCCESS') {
        icon = 'device_green';
        value = res.deviceName;
        // 没有设备名，读取设备名
        if (!value) {
          action();
          return;
        }
        // 如果传递vue实例
        else if (vm) {
          vm.deviceInfo = {
            deviceName: res.deviceName || ''
          }
        }
      } else if (res.status === 'NOT_CONNECTION') {

      } else { // 其它状态不设置header
        return;
      }

      headerInfo.right.icon = icon;
      headerInfo.right.value = value;

      Jsborya.setHeader(headerInfo);

      typeof cb === 'function' && cb();
    }

    if (deviceInfo) {
      set_(deviceInfo)
    } else {
      action()
    }
  }
  /**
  *@describe 放弃订单
  *@param {Object} (userInfo) 用户信息
  *@param {String} (sysOrderId) 订单号
  *@param {Boolean} (isJump) 是否跳转到号码搜索
  **/
  Vue.prototype.orderCancel = function (request = {}, isJump = true, isConfirm = true, closeBase64 = false) {
    const _self = this;

    const action = () => {
      _self.AJAX(request.url, request.body, function (res) {
        // 是否放弃后跳转到首页
        if (isJump) {
          if (typeof isJump === 'function') {
            isJump();
          } else {
            _self.toHomePage();
          }
        }
      }, false, closeBase64);
    }
    // 是否需要弹窗确认
    if (isConfirm) {
      layer.open({
        content: '您要放弃未完成的订单的后续操作么？',
        btn: ['放弃', '取消'],
        title: '提示',
        yes () {
          action();
        }
      });
    } else {
      action()
    }
  }
  /**
   *@describe 错误气泡
    *@param {Object} (data) 显示数据
    *@param {Object} (postData) 请求参数
  **/
  Vue.prototype.errorBubble = function (data = '', postData) {//错误处理
    const _self = this;

    const layerConfirm = function (options, cb) {
      let layerIndex = layer.open({
        title: options.title || '提示',
        content: options.content,
        btn: options.btn || ['确定'],
        shadeClose: false,
        yes () {
          layer.close(layerIndex);
          if (typeof cb == 'function') {
            cb()
          }
        }
      });
    }

    if (data.code == "671") {
      Jsborya.pageJump({
        url: '',
        depiction: '登录',
        stepCode: 'LOGIN',
        data: {
          isSignOut: true
        }
      })
    } else if (data.code == "649") {
      // layerConfirm({
      //   content: data.msg,
      // },
      //  () => {
      Jsborya.pageJump({
        url: '',
        depiction: '登录界面',
        // stepCode: 'DESTROY'
        stepCode: 'LOGIN'
      })
      // })
    } else if (data.code == "2000") { // 版本升级弹窗
      layerConfirm({
        content: '发现新版本，请升级',
      })
    } else if (data.code == "678") {
      layerConfirm({
        content: '订单超时已关闭',
      }, () => {
        Jsborya.pageJump({
          url: '',
          depiction: '首页',
          stepCode: 'HOME'
        })
      })
    } else if (data.code == "724") {//打开GPS
      layerConfirm({
        content: '当前定位功能未打开，请打开定位',
        btn: ["打开定位", "取消"],
      }, () => {
        Jsborya.pageJump({
          url: '',
          depiction: '打开定位权限',
          stepCode: 'OPEN_GPS_POWER'
        })
      })
    } else if (data.code == "725") {//GPS异常
      layerConfirm({
        content: '当前位置信息不可用，请重新获取。',
        btn: ["重新获取", "取消"],
      }, () => {

      })
    } else if (data.code == "654") {
      layerConfirm({
        content: '尊敬的用户，当前套餐月底不允许开卡，请更换套餐。'
      })
    } else if (data.code == "695") {
      layerConfirm({
        content: '<div class="f-tal" style="line-height: 1.65;">尊敬的合作伙伴：<p style="text-indent:20px;margin:3px 0;">根据《电话用户实名制身份证信息入网规定》，所有制成卡、制白卡号码，需要上传预留机主身份证信息。历史已制卡成功未激活号码，需由制卡商户补充上传预留机主身份证信息后，方可激活。</p><p style="text-indent:20px;margin:3px 0;">需由制卡商户由“制卡补录”功能上传</p></div>'
      })
    } else if (data.code === "NOT_CONNECTION") {
      layerConfirm({
        content: '设备未连接，请连接设备后进行操作！',
        btn: ['去连接设备', '取消'],
      }, () => {
        Jsborya.pageJump({
          url: '',
          stepCode: 'DEVICE_MANAGE',
          depiction: '设备管理',
          apiComplete: 'deviceStatusChange'
        })
      })
    } else {
      layer.open({
        content: data.msg || data,
        skin: "msg",
        time: 3
      });
    }
  };
}
